Sometimes, a python script that is making Microsoft Graph requests may be detected by the gateway as a web-crawler if you are using a pool manager and block the request. The error will look similar to this:
{‘error’: {‘code’: ‘UnknownError’, ‘message’: ‘\r\n403 Forbidden\r\n\r\n
403 Forbidden
\r\n
Microsoft-Azure-Application-Gateway/v2
\r\n\r\n\r\n’, ‘innerError’: {‘date’: ‘{UTC Date/Time}’, ‘request-id’: ‘{guid}’, ‘client-request-id’: ‘{guid}’}}}
To overcome this issue the easiest way is to use the MS Graph SDK for python but if you’re not using that, then you should structure your requests in a similar fashion to the MS Graph SDK for Python which is using a session to make the requests. For example:
from requests import Request, Session def example_request(url): http = Session() req = Request('GET', url, headers=h) prepped = req.prepare() resp = http.send(prepped) return resp.json()